/*~-1*/
/*~XSF_LANGUAGE: C/C++*/
/*~A:1*/
/*~+:File Header*/
/*~T*/
/****************************************************************************
 * 
 ****************************************************************************/

/*~E:A1*/
/*~A:2*/
/*~+:Import*/
/*~T*/
/* Import                                                                      */

/*~T*/
/* own header file */
#include "general.h"

/*~T*/

/*~E:A2*/
/*~A:3*/
/*~+:Public Functions*/
/*~T*/
/* Public Functions                                                            */

/*~I:4*/
#ifdef DELAY_FUNCTIONS
/*~A:5*/
/*~+:void delay_us(u8 nr)       Calculated for 16MHz clock*/
/*~F:6*/
void delay_us(u8 nr)
/*~-1*/
{
   /*~A:7*/
   /*~+:local definitions*/
   /*~T*/
   u8 i;
   /*~E:A7*/
   /*~L:8*/
   for (i=0;i<nr;i++)
   /*~-1*/
   {
      /*~T*/
      asm volatile("nop\n\t"
                   "nop\n\t"
                   "nop\n\t"
                   "nop\n\t"
                   "nop\n\t"
                   "nop\n\t"
                   "nop\n\t"
                   "nop\n\t"
                   "nop\n\t"
                   "nop\n\t"
                   ::);

   /*~-1*/
   }
   /*~E:L8*/
   /*~T*/

/*~-1*/
}
/*~E:F6*/
/*~E:A5*/
/*~A:9*/
/*~+:void delay_ms(u8 nr)*/
/*~F:10*/
void delay_ms(u8 nr)
/*~-1*/
{
   /*~A:11*/
   /*~+:local definitions*/
   /*~T*/
   u8 i,n;

   /*~E:A11*/
   /*~L:12*/
   for (i=0;i<nr;i++)
   /*~-1*/
   {
      /*~L:13*/
      for (n=0;n<50;n++)
      /*~-1*/
      {
         /*~T*/
         delay_us(20);
      /*~-1*/
      }
      /*~E:L13*/
   /*~-1*/
   }
   /*~E:L12*/
   /*~T*/

/*~-1*/
}
/*~E:F10*/
/*~E:A9*/
/*~-1*/
#endif
/*~E:I4*/
/*~I:14*/
#ifdef STRING_FUNCTIONS
/*~A:15*/
/*~+:void u_to_str10(u16 nr, u8*str, u8 max_chr, u8 fill)*/
/*~F:16*/
void u_to_str10(u16 nr, u8*str, u8 max_chr, u8 fill)
/*~-1*/
{
   /*~A:17*/
   /*~+:local variables*/
   /*~T*/
   u8 d;
   u8 i;

   /*~E:A17*/
   /*~T*/
   max_chr = max_chr - 1;

   /*~L:18*/
   for (i=0;i<=max_chr;i++)
   /*~-1*/
   {
      /*~I:19*/
      if (nr)
      /*~-1*/
      {
         /*~T*/
         d = nr % 10;
         nr = nr / 10;
         str[max_chr-i] = '0' + d;

      /*~-1*/
      }
      /*~O:I19*/
      /*~-2*/
      else
      {
         /*~I:20*/
         if (i)
         /*~-1*/
         {
            /*~T*/
            str[max_chr-i] = fill;

         /*~-1*/
         }
         /*~O:I20*/
         /*~-2*/
         else
         {
            /*~T*/
            str[max_chr-i] = '0';
         /*~-1*/
         }
         /*~E:I20*/
      /*~-1*/
      }
      /*~E:I19*/
   /*~-1*/
   }
   /*~E:L18*/
   /*~T*/

/*~-1*/
}
/*~E:F16*/
/*~E:A15*/
/*~A:21*/
/*~+:void u_to_str16(u16 nr, u8*str, u8 max_chr, u8 fill)*/
/*~F:22*/
void u_to_str16(u16 nr, u8*str, u8 max_chr, u8 fill)
/*~-1*/
{
   /*~A:23*/
   /*~+:local variables*/
   /*~T*/
   u8 d;
   u8 i;

   /*~E:A23*/
   /*~T*/
   max_chr = max_chr - 1;

   /*~T*/
   d=1;

   /*~L:24*/
   for (i=0;i<=max_chr;i++)
   /*~-1*/
   {
      /*~I:25*/
      if (d)
      /*~-1*/
      {
         /*~T*/
         d = ((u8)nr) & 0x0F;
         nr = nr >> 4;
         str[max_chr-i] = '0' + d;

      /*~-1*/
      }
      /*~O:I25*/
      /*~-2*/
      else
      {
         /*~T*/
         str[max_chr-i] = fill;

      /*~-1*/
      }
      /*~E:I25*/
   /*~-1*/
   }
   /*~E:L24*/
   /*~T*/

/*~-1*/
}
/*~E:F22*/
/*~E:A21*/
/*~-1*/
#endif
/*~E:I14*/
/*~T*/

/*~E:A3*/
/*~T*/

